1. Field of the Invention
The field of the invention relates to the field of data processing in systems comprising a plurality of devices connected via an interconnect and in particular, to ways of synchronising different components within such distributed systems.
2. Description of the Prior Art
Distributed systems comprising many devices interconnected by one or more interconnects are known. Transaction requests flowing through these interconnects may take different routes and may be delayed in different ways. There is therefore considerable opportunity for the ordering of the transactions to change. This may or may not be a problem depending on the transactions, but in some cases it can lead to changes in program order that can have unexpected consequences.
Synchronisation of the system at certain points in a transaction request flow is therefore important and transaction request generators may have the ability to generate certain synchronising requests that can be multicast through the system to determine the progress of earlier transactions. When responses to all the multicast synchronising requests have been received the transaction request generator will know that the preceding transactions have reached the required point and that it is safe to issue subsequent transaction requests.
One example of such synchronising requests are barrier requests. These are generated in order to maintain an order of transaction requests with respect to the barrier request. Thus, a transaction request generator may generate a barrier at a certain point in the transaction request stream where it is important that preceding transaction requests have completed or at least reached a required point in the system before subsequent transaction requests are issued. Thus, all pending transaction requests are issued and multiple barrier transactions are generated and sent to follow the transaction requests whose progress is being monitored. When a response to all the multiple barrier transactions are received then the subsequent transaction requests can be issued.
In systems of increasing complexity with increasing numbers of transaction request generators and recipients, the circuitry required to generate and distribute the synchronising requests and to gather their responses in each of the transaction request generators is high. In particular, the transaction generator must know all the destinations that the synchronising requests should be sent to, it must send the barriers and track responses from each destination.
It would be desirable to be able to provide synchronisation of a large distributed system without unduly increasing the hardware of the components of the system.